package com.runtu.domain.trade.service;

import com.runtu.domain.trade.model.entity.MarketPayOrderEntity;
import com.runtu.domain.trade.model.entity.PayActivityEntity;
import com.runtu.domain.trade.model.entity.PayDiscountEntity;
import com.runtu.domain.trade.model.entity.UserEntity;
import com.runtu.domain.trade.model.valobj.GroupBuyProgressVO;

/**
 * @ClassName ITraderOrderService
 * @Description 交易订单服务接口
 * @date 2025/8/3 17:05
 * @Version 1.0
 */
public interface ITraderLockOrderService {

    /**
     * 通过外部单号去查询 ，未被支付消费完成的营销优惠订单
     * 也就是未支付的订单
     * @param userId
     * @param outTradeNo
     * @return
     */
    MarketPayOrderEntity queryMarketPayOrderByOutTradeNo(String userId, String outTradeNo);


    /**
     * 查询锁单量
     * @param teamId
     * @return
     */
    GroupBuyProgressVO querygroupbuyprogress(String teamId);

    /**
     * 锁定，营销预支付订单；商品下单前，预购锁定。
     * 锁单的方法，入参是用户，活动和折扣三个实体
     * 锁单后，要有锁单记录 返回锁单实体MarketPayOrderEntity
     * @param userEntity 用户根实体对象
     * @param payActivityEntity 拼团，支付活动实体对象
     * @param payDiscountEntity 拼团，支付优惠实体对象
     */
    MarketPayOrderEntity lockMarketPayOrder(UserEntity userEntity, PayActivityEntity payActivityEntity, PayDiscountEntity payDiscountEntity) throws Exception;


}
